#include <iostream>

#include "EndPointMarker.h"
#include "PlotModel.h"

#include "SymbolLine.h"

EndPointMarker::EndPointMarker(PlotModel *model) : QwtPlotMarker(), _model(model)
{}
 
void EndPointMarker::draw(QPainter *painter,const QwtScaleMap &xMap, const QwtScaleMap &yMap,const QRectF &canvasRect) const
{
	/// ladujemy wspolrzedne punktu koncowego krzywej
	const double x =  xMap.transform(xValue());
	const double y =  yMap.transform(yValue());

	std::cout << "end (x,y) = (" << x << ", " << y << ")" << std::endl;

	_model->setGlobalPoint(QPointF(x,y));

	drawAt(painter, canvasRect, QPointF(x, y));
}

void EndPointMarker::drawAt(QPainter *painter, const QRectF &rect, const QPointF &pos) const
{
	/// najpierw pozbywamy sie przydomka const 
	QwtSymbol *s = const_cast<QwtSymbol *>(symbol());

	/// nastepnie rzutujemy na nasza odpowiedzialnosc klase bazowa na klase pochodna (zawsze bedzie poprawnie)
	LineSymbol *symbol = dynamic_cast<LineSymbol *> (s);

	/// wywolujemwy rysowanie symbolu zaladowanego do markera
	symbol->drawSymbol(painter,pos);  
}